/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package pe.edu.upc.dew.profesoresparticulares.action;

import com.opensymphony.xwork2.validator.annotations.RequiredStringValidator;
import java.util.ArrayList;
import java.util.HashMap;
import org.apache.struts2.convention.annotation.Action;
import org.apache.struts2.convention.annotation.Result;
import org.apache.struts2.interceptor.validation.SkipValidation;
import org.springframework.beans.factory.annotation.Autowired;
import pe.edu.upc.dew.profesoresparticulares.model.Usuario;
import pe.edu.upc.dew.profesoresparticulares.service.UsuarioService;

/**
 *
 * @author gabriel
 */
public class RegistrarUsuarioAction extends BaseAction {

    @Autowired
    private UsuarioService usuarioService;
    ArrayList<HashMap<String, String>> tipoUsuarios = new ArrayList<HashMap<String, String>>();
    private String tipo;
    private String mail;
    private String nombre;
    private String paterno;
    private String materno;
    private String password;

    public void prepare() throws Exception {
        HashMap<String, String> hm = new HashMap<String, String>();
        hm.put("tipoUsuario", "A");
        hm.put("descUsuario", "Alumno");
        tipoUsuarios.add(hm);
        hm = new HashMap<String, String>();
        hm.put("tipoUsuario", "P");
        hm.put("descUsuario", "Profesor");
        tipoUsuarios.add(hm);
    }

    @Action(value = "registrarUsuario", results = {
        @Result(name = SUCCESS, location = "pages/registrarUsuario.jsp"),
        @Result(name = ERROR, location = "pages/registrarUsuario.jsp"),
        @Result(name = INPUT, location = "pages/registrarUsuario.jsp")})
    public String registrarUsuario() {
        Usuario usuario = new Usuario();
        usuario.setApeMaterno(materno);
        usuario.setApePaterno(paterno);
        usuario.setMail(mail);
        usuario.setTipoUsuario(tipo);
        usuario.setPassword(password);
        usuario.setNomUsuario(nombre);
        boolean insert = usuarioService.registrarUsuario(usuario);
        if (insert == true) {
            addActionMessage("Satisfactorio");
            return SUCCESS;
        } else {
            addActionError("Error");
            return ERROR;
        }
    }

    @SkipValidation
    @Action(value = "registrarUsuarioInicio", results = {
        @Result(name = SUCCESS, location = "pages/registrarUsuario.jsp")})
        //@Result(name = SUCCESS, location = "pages/registrarUsuario.jsp")})
    public String inicio() {
        return SUCCESS;
    }

    @Action(value = "volverInicio", results = {
        @Result(name = SUCCESS, location = "index.jsp"),
        @Result(name = INPUT, location = "index.jsp")})
    public String volver() {
        return SUCCESS;
    }

    public ArrayList<HashMap<String, String>> getTipoUsuarios() {
        return tipoUsuarios;
    }

    public void setTipoUsuarios(ArrayList<HashMap<String, String>> tipoUsuarios) {
        this.tipoUsuarios = tipoUsuarios;
    }

    @RequiredStringValidator(message = "Ingresar mail", trim = true)
    public String getMail() {
        return mail;
    }

    public void setMail(String mail) {
        this.mail = mail;
    }

    @RequiredStringValidator(message = "Ingresar materno", trim = true)
    public String getMaterno() {
        return materno;
    }

    public void setMaterno(String materno) {
        this.materno = materno;
    }

    @RequiredStringValidator(message = "Ingresar nombre", trim = true)
    public String getNombre() {
        return nombre;
    }

    public void setNombre(String nombre) {
        this.nombre = nombre;
    }

    @RequiredStringValidator(message = "Ingresar password", trim = true)
    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    @RequiredStringValidator(message = "Ingresar paterno", trim = true)
    public String getPaterno() {
        return paterno;
    }

    public void setPaterno(String paterno) {
        this.paterno = paterno;
    }

    public String getTipo() {
        return tipo;
    }

    public void setTipo(String tipo) {
        this.tipo = tipo;
    }

    public void setUsuarioService(UsuarioService usuarioService) {
        this.usuarioService = usuarioService;
    }
}
